# _*_ coding: UTF-8 _*_
# @Time     : 2020/10/12 下午 04:40
# @Author   : Li Jie
# @Site     : http://www.cdtest.cn/
# @File     : operator.py
# @Software : PyCharm


# 运算符
# 分类:算术运算符，比较（关系）运算符，逻辑运算符，赋值运算符，成员和身份运算符，位和位移运算符

# 1.算术运算符
print(5 / 2)  # 会除尽
print(5 // 2)  # 整除
print(5 % 2)  # 求余数
print(5 ** 2)  # 求5的2次幂

# 2.比较运算符：两边运算的是数值，得到是布尔值
print(3 == 5, end=' ')
print(3 != 5)

# 3.逻辑运算符：两边运算布尔值，得到布尔值
# and：逻辑与关系，并且，求两个条件的交集，当缩小范围时应该用and运算

# or：逻辑或关系，或者，求两个条件的并集，当扩大范围的时候用or运算

# not：逻辑非关系，非真为假，非假为真


# 4.赋值运算符：赋值的优先级，都是先右后左
a = 1
b = 2
b += a  # 等同于b=b+a
b += a * b
print(b)

# 5.成员运算符in和身份运算符is
# in操作符的运算值是布尔值，a in b：a是否是b的成员
print(3 in (1, 2, 3, 4, 5))
print(0 in (1, 2, 3, 4, 5))

# 身份运算符
a = 20
b = 20

if (a is b):
    print("1 - a 和 b 有相同的标识")
else:
    print("1 - a 和 b 没有相同的标识")

if (a is not b):
    print("2 - a 和 b 没有相同的标识")
else:
    print("2 - a 和 b 有相同的标识")

# 修改变量 b 的值
b = 30
if (a is b):
    print("3 - a 和 b 有相同的标识")
else:
    print("3 - a 和 b 没有相同的标识")

if (a is not b):
    print("4 - a 和 b 没有相同的标识")
else:
    print("4 - a 和 b 有相同的标识")

# 6.位和位移运算符
# 位运算：运算数值得到数值，& | ~，讲数值转换为2进制，从低位对齐按位做相应的与、或、非运算
print(3 & 5)
print(3 | 5)
print(~5)

print(4 >> 1)
print(4 << 1)
# print(4<<<1)
